This invention relates to error correcting coding, and in particular to techniques for trellis coded modulation.
Many modem communication systems use error correcting coding techniques to improve the reliability of data communication. Forward error correcting codes allow a receiver to identify and correct certain transmission errors. In some instances, the judicious use of error correcting codes on a given transmission channel may allow the use of higher order modulation techniques, thereby effectively increasing the net data throughput. Error correcting coding techniques (e.g., convolutional and block codes) are described in numerous references that are readily available in the art.
Recently, a variety of techniques known as trellis coded modulation have become popular. Trellis coded modulation combines modulation and coding, whereby the redundancy added by the error correcting code does not increase the symbol rate but rather increases the size of the modulation "alphabet". In a typical trellis coded modulation designed for additive white Gaussian noise channel, some lesser significant bits of the binary code corresponding to a modulation state are coded with a convolutional code while more significant bits are left uncoded. For such a system, the coded bits determine a particular one of several subsets of modulation symbol constellation points, while the uncoded bits select a particular point in the subset. The uncoded bits thus select a quadrant in the modulation constellation while the coded bits select a particular point within the quadrant. The particular point corresponds to the modulation symbol for that set of coded and uncoded bits.
The typical trellis coded modulation technique described above provides improvement by significantly increasing the Euclidean distance between points in a subset (through error correcting coding), which results in greater immunity to noise for the uncoded bits. In fact, the Euclidean distance between points in the subset is significantly greater than the distance between points in the original (uncoded) constellation. For this reason, convolutional codes are typically selected for trellis coded modulation based on maximizing the free Euclidean distance of the code. However, convolutional codes optimized in this manner may not perform well on a transmission channel subject to fading, wherein an entire modulation symbol may be erased.
The convolutional codes used for trellis coded modulation provides improvement at a cost. Convolutional codes generate a significant amount of redundant data that are used to perform error detection and correction. For a given transmission rate, the redundancy effectively decreases the data throughput rate. To increase the fraction of the transmitted bits that represent useful data (or alternatively, to reduce the amount of added redundancy) a technique called puncturing can be used. In a punctured code, some bits in the coded bit stream are systematically removed (or punctured) prior to transmission, in accordance with a puncturing pattern, to reduce the number of transmitted bits. At the decoder, the removed bits are flagged as "erasures" and decoded accordingly.
Erasures reduce the error correcting capability of the code and result in less coding gain. However, puncturing increases the code rate and permits the use of a simple, low code rate decoder for decoding various higher code rates. The use of punctured codes in a trellis coded modulation system is described by J. Wolf and E. Zehavi in "P2 Codes: Pragmatic Trellis Codes Utilizing Punctured Convolutional Codes", IEEE Communications Magazine, vol. 33, February 1995, pp. 94-99, which is incorporated herein by reference. However, punctured codes may not perform well on a transmission channel subject to fading, wherein an entire modulation symbol may be erased.
The characteristics of the transmission channel dictate, in part, the design of a forward error correcting coding scheme. Certain transmission channels are subject to significant fading due to multipath. Multipath results from receiving multiple (and possibly distorted) copies of the transmitted signal that can add constructively or destructively to cause fading. For these channels, entire modulation symbols may be obliterated. In some cases, relatively long sequences of symbols may be obliterated. For example, the channel may be subject to periodic interference or, in the case of mobile cellular applications, multipath fading may cause the receiver to lose the receive signal for short periods of time. As another example, in orthogonal frequency division multiplexing (OFDM) systems, portions of a frequency band may be lost due to frequency selective fading.
To combat fading, interleaving is typically used to disperse (or spread out) the deleted symbols. Through interleaving, a sequence of adjacent symbols is reordered into a periodic or otherwise separated symbol sequence. However, interleaving can result in a received signal where symbols may be periodically deleted due to, e.g., a burst of errors at the interleaver input.
Interleaving can make the deletion of adjacent symbols by the channel appear like periodic symbol deletion and puncturing results in intentional deletion of symbols. Unfortunately, for conventional convolutional codes (e.g., those optimized to maximize free Euclidean distance), the interaction of these effects can seriously degrade performance.
Another concern is the implementation of trellis coded modulation receivers. High performance codes generally require very complex decoders, raising system cost.